// Package middleware pkg/middleware/trace_id.go
package middleware

import (
	"github.com/gin-gonic/gin"
	"github.com/google/uuid"
	"gozrd-admin-api/pkg/traceid"
)

// TraceID 生成请求跟踪ID的中间件
func TraceID() gin.HandlerFunc {
	return func(c *gin.Context) {
		// 获取请求头中的trace_id
		traceID := c.GetHeader("X-Trace-ID")
		if traceID == "" {
			// 如果请求头中没有trace_id，则生成一个新的
			traceID = uuid.New().String()
		}

		// 设置trace_id到上下文
		c.Set(traceid.TraceIDKey, traceID)

		// 设置响应头
		c.Writer.Header().Set("X-Trace-ID", traceID)

		c.Next()
	}
}
